package com.cskaoyan.javase.oop2.fieldhidden7.statics;

/**
 * @description: 静态成员变量怎么办？
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import javax.swing.plaf.synth.SynthTextAreaUI;

/**
 * 如果父类中有静态成员变量，能不能被继承？
 * 父类的静态成员变量是可以被继承的
 * 继承后，如果有同名的变量，是覆盖了 还是隐藏了？
 *
 * 大家想一下：这里应该是覆盖还是隐藏？
 * 不要想成覆盖,也不要想成隐藏,严格来说 是互不影响的
 *
 */
public class Demo2 {
    public static void main(String[] args) {
        /*Cat.age = 100;
        System.out.println(Cat.age);
        System.out.println(Animal.age);*/

        Son.var = 100;
        System.out.println(Father.var);
        //父子类共用一个静态成员的内存区域
        //代码不会欺骗你，用程序说话 就是最好的事实

        //Person.age

    }
}

class Animal {
    static int age = 10;
}

class Cat extends Animal {
    static int age = 20;
}

class Father {
    static int var = 1;
}

class Son extends Father {
    public void test(){
        //只要掌握原理 走遍天下都不变
        //super代表父类对象的引用，既然父类都有对象，成员变量已经初始化了，一定类加载完毕了，于是一定有静态成员
        System.out.println(super.var);//这里肯定报黄 因为不推荐用对象访问静态成员 ，应该直接用类名
        System.out.println(Father.var);//这里肯定报黄 因为不推荐用对象访问静态成员 ，应该直接用类名
    }
}

class Person{
    //父类又不继承子类，所有没有
}
class Student extends Person{

    static int age;

}
